using System.Collections.Generic;
using System.ServiceModel;
using VMDS.Business.Entities;

namespace VMDS.Data
{
    [ServiceContract]
    public interface IEntityCrud
    {
        #region VM CRUD

        [OperationContract]
        List<VM> GetVMs();

        [OperationContract]
        int AddVM(VM vm);

        [OperationContract]
        void UpdateVM(VM vm);

        [OperationContract]
        VM GetVM(int id);

        [OperationContract]
        void DeleteVM(VM vm);

        #endregion

        #region OS CRUD

        [OperationContract]
        List<OS> GetOSs();

        [OperationContract]
        void AddOS(OS os);

        [OperationContract]
        void UpdateOS(OS os);

        [OperationContract]
        OS GetOS(int id);

        [OperationContract]
        void DeleteOS(OS os);
        
        
        
        #endregion

       
        #region Screenshot CRUD

        [OperationContract]
        List<ScreenShot> GetScreenShots();
        [OperationContract]
        void AddScreenShot(ScreenShot scr);

        [OperationContract]
        void UpdateScreenShot(ScreenShot scr);

        [OperationContract]
        ScreenShot GetScreenShot(int id);

        [OperationContract]
        void DeleteScreenShot(ScreenShot scr);

        #endregion

        #region Subject CRUD

        [OperationContract]
        List<Subject> GetSubjects();

        [OperationContract]
        void AddSubject(Subject subj);

        [OperationContract]
        void UpdateSubject(Subject subj);

        [OperationContract]
        Subject GetSubject(int id);

        [OperationContract]
        void DeleteSubject(Subject subj);

        #endregion

        #region ClientPC CRUD

        [OperationContract]
        List<ClientPC> GetClientPCs();

        [OperationContract]
        void AddClientPC(ClientPC pc);

        [OperationContract]
        void UpdateClientPC(ClientPC pc);

        [OperationContract]
        ClientPC GetClientPC(int id);

        [OperationContract]
        void DeleteClientPC(ClientPC pc);

        #endregion

        #region Task CRUD

        [OperationContract]
        List<Task> GetTasks();

        [OperationContract]
        void AddTask(Task task);

        [OperationContract]
        void UpdateTask(Task task);

        [OperationContract]
        Task GetTask(int id);

        [OperationContract]
        void DeleteTask(Task task);

        #endregion
    }
}